package club.janna.concurrency.example.singleton;

import club.janna.concurrency.annotation.ThreadSafe;
import club.janna.concurrency.annotation.Unrecommended;

/**
 * 单例模式-懒汉模式
 * 第一次使用时进行初始化
 * @Auther: guopanbo
 * @Date: 2018/8/1 21:49
 * @Description:
 */
@ThreadSafe
@Unrecommended
public class SingletonExample3 {

    private SingletonExample3() {}

    private static SingletonExample3 instance = null;


    /**
     * 使用synchronized关键字对所有调用该方法的实例加锁，保证线程安全，但由于需要等待线程同步，所以效率很低，不推荐使用
     * @return
     */
    public static synchronized SingletonExample3 getInstance() {
        if(instance == null)
            instance = new SingletonExample3();
        return instance;
    }
}
